#include<stdio.h>
#include<string.h>
#include<signal.h>
#include<unistd.h>
void mysig(int signo)
{
  printf("hello this is signo: %d\n",signo);
}

int main()
{
  sigset_t iset;//输入型参数
  sigset_t oset;//输出型参数

  //修改2和40号信号的动作
  //方便观察下面阻塞结束后的状况
  signal(2, mysig);
  signal(40, mysig);

  sigemptyset(&iset);//全置为0
  sigemptyset(&oset);

  //将2号信号和40号信号加入进位图
  sigaddset(&iset, 2);
  sigaddset(&iset, 40);
  
  //阻塞改位图里面的信号
  sigprocmask(SIG_SETMASK, &iset, &oset);
  int count = 0;
  while(1)
  {
    printf("hello sigprocmask!\n");
    
    count++;
    sleep(1);
    if(count == 20)
    {
      //oset位图是全0，不阻塞任何信号
      sigprocmask(SIG_SETMASK,&oset,NULL);
      printf("2 and 40 is ready!\n"); 
    }
  }
  return 0;
}
